﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BattleEntity
{
    private int m_iId;
    public int Id
    {
        get { return m_iId; }
    }
    private bool m_bInit = false;

    protected List<BattleEntity> m_lisChild = new List<BattleEntity>();
    private BattleEntity m_parent = null;

    public void Init(int id)
    {
        m_iId = id;
        m_bInit = true;
    }

    public virtual void OnCreate(params object[] args)
    {

    }

    public virtual void OnDestroy()
    {

    }

    public virtual void OnUpdate(float deltaTime)
    {
        if (m_bInit)
            return;
    }

    public virtual bool HandleMessage(MessageBody body)
    {
        return false;
    }

    public void InsertChild(int id)
    {
        BattleEntity entity = BattleEntityFactory.Instance.GetBtEntity(id);
        if(entity != null)
        {
            m_lisChild.Add(entity);
        }
    }

    public BattleEntity GetChild(int id)
    {
        for (int i = 0; i < m_lisChild.Count; i++)
        {
            if(m_lisChild[i].Id == id)
            {
                return m_lisChild[i];
            }
        }

        return null;
    }

    public bool IsChild(int id)
    {
        for (int i = 0; i < m_lisChild.Count; i++)
        {
            if(m_lisChild[i].Id == id)
            {
                return true;
            }
        }
        return false;
    }

    public void DelChild(int id)
    {
        for (int i = 0; i < m_lisChild.Count; i++)
        {
            if(m_lisChild[i].Id == id)
            {
                m_lisChild.RemoveAt(i);
                i++;
            }
        }
    }

    public int GetChildCount()
    {
        return m_lisChild.Count;
    }

    public void DelAllChild()
    {
        m_lisChild.Clear();
    }

    public void SetParent(BattleEntity t)
    {
        m_parent = t;
    }

    public BattleEntity GetParent()
    {
        return m_parent;
    }
    public bool ParentNotNull()
    {
        return (m_parent != null);
    }
}
